package Day06;

import jdk.nashorn.internal.runtime.Debug;

public class Day06 {
    public static void main(String[] args) {
        /*整型变量范围的计算
        * //1 一个字节为8位
        * //2 起始位置从2的0次幂开始算起
        * //3 例如byte 占一个字节 也就是8位
        * 写成2进制即为 00000000
        * 当表示1时    00000001
        * */


//方法
        //方法的意义 每种语言中都有方法的概念(c语言里一般叫函数 vb里叫过程)

        //作用 用于封装一段特定的业务逻辑功能-----------()小括号是方法的标志
           //业务逻辑功能 干了一些事情
        //建议 方法尽可能独立 一个方法尽量干一件事
        //特点 方法可以反复多次被调用
        //好处 可以减少代码重复 有利于代码维护
        //使用规则 只要是一个独立的业务功能 就得封装到一个方法中

        //方法的定义
        //五个要素 修饰词 返回值类型 方法名 参数列表 方法体
        //1 public static(修饰词) 第一要素 这个词一定在方法第一个词
        //2 返回值 有等号才有返回值
           //方法可以有返回值 也可以没有
           //无返回值---------返回值类型统一写成void
           //有返回值---------返回值类型写成特定的数据类型即可(8大基本+(引用)数组)

           //何时有返回值 何时没有
           //方法执行完之后:
              //若还需要用到方法中的数据------有返回值
              //若不需要用到方法中的数据------无返回值
           //public static void-----------无
           //public static int...---------有 为int
        //3 方法名 见名知意
           //例如 sum求和 say说话等等
           //public static void sum...
           //public static void say...
        //4 参数列表
        //方法可以有参数 也可以无参数
        //有参数可以使方法更加灵活
        //例如
        //public static void sum ()                     无参数列表
        //public static void sum (int num1,int num2)    表示两个数相加的和
        //5 方法体 具体的业务逻辑实现
        //例如
        //public static void sum () {
        //     业务逻辑实现...
        // }

        //方法之间是并列关系
        //建立完方法需要调用才能输出 否则计算机无法识别
        //main--自己建立的方法--输出方法--下一句...--main结束--程序结束

        //参数有两个名词
           //1 形参 定义方法时的参数 只是声明了一个参数 没有值
           //2 实参 调用方法时的参数 调用时赋予了值的参数

        //返回值
        //return
           //1 return值------1)结束方法的执行  2)返回结果的值给调用方
           //返回值与return值的类型必须匹配
           //返回值可以是变量的直接量 也可以是运算
        //数据类型 变量=方法名(有参数传参数)

           //2 return; 1)表示结束方法的执行 只能用在无返回值的方法中 可写可不写 看需求

        //方法的嵌套调用


        //方法的重载(overloading/overload)
        //方法的签名 方法名+参数列表
        //public static void say(){\...}
        //say()就是签名
        //java规定 不能出现签名完全相同的情况 即使内容和返回值不一样也不行

        //定义 发生在同一类中 方法名相同 参数列表不同
        //绑定 编译器在编译的时候会根据方法的签名自动绑定方法
        /*例如
        * ...say()
        * ...say(String name)
        * say();//调用无参say方法
        * say(\...);//调用String参数say方法*/

        //重载错误演示
//        public static void a(){}
//        public static int a(){return;}------------编译错误 签名一致 重载与返回值类型无关
//
//        public static void a(String name){}
//        public static void a(String address){}----编译错误 方法名和参数类型相同 重载与名称无关

        //Debug调试
        //编译错误
        //异常
        //程序的运行结果与预期结果不同(没有错误提示)----------Debug调试

        //补充
        //Debug调试工具
           //添加断点 点击你想添加断点的那行的前面
           //Debug运行程序
        //F7 逐步调试(会进入到方法中一步一步走)
        //F8 逐过程调试(不会进入到方法里)(在方法内走非方法的代码也可以按F8往下走)
        //F9 直接跳到下一个断点处 若后面没有断点了 则调试结束
        //断点是不能跳过的 只要是断点 一定会走

        //while(true)...break----------自造死循环
        //可以避开循环三要素
        //适用于与次数无关的问题
        //(其实for也可以用自造死循环进行判断 只不过不能应用比较麻烦的循环)














    }
}
